package java_annotation;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Retention(RetentionPolicy.RUNTIME) // 保留期，标识运行期间也使用
@Documented // 文档，将注解的元素包含到Javadoc
@Target(ElementType.METHOD ) // 目标，注解运用场景的限制
@Inherited // 继承，标识标注类的子类会继承此注解
public @interface TestAnnotation {
    int id() default 0;  // 注解的属性，使用无形参方法声明
    String msg() default "test";
    Key[]  value();  // 注解的属性，由于标识了Repeatable，所以可以有复数的注解标识不同的东西
}


@Repeatable(value = TestAnnotation.class) // 可重复，见上，Key[]是个数组
@interface Key{
    String role() default "";
}
